from django.shortcuts import render,redirect

# Create your views here.

from django.http import HttpResponse
from django.urls import reverse

from app2.models import UserBaseInfo


def index(request):
    return HttpResponse("app2中的index方法")

####### 路由参数
def show(request, id):
    return HttpResponse("app2中的show方法，参数为id,值为：" + str(id))

def show_uuid(request, id):
    return HttpResponse("app2中的show_uuid方法，参数为id,值为：" + str(id))

def show_slug(request, q):
    return HttpResponse("app2中的show_slug方法，参数为q,值为：" + str(q))

###### 正则匹配复杂路由

def article_list(request,year):
    return HttpResponse("app2中的article_list方法，参数为year，指定四位，值为：" + str(year))
def article_page(request,page,key):
    return HttpResponse("app2中的article_page方法，参数page,任意数字，值为：" + str(page) +" 参数key,字母数字下划线，值为：" + str(key))

###### 反向解析路由
def url_reverse(request):
    print("在views()函数中使用reverse()方法解析结果：" + reverse("app2_url_reverse"))
    return render(request,"2/url_reverse.html")

###### 视图函数
def test_get(request):
    print(request.get_host()) # 域名+端口
    print(request.get_raw_uri()) # 全部路径包含参数
    print(request.path) # 获取访问文件路径，不包含参数
    print(request.get_full_path()) # 获取访问文件路径，包含参数
    print(request.method) # 获取请求中使用的http方式
    print(request.GET) # 获取get请求的参数
    print(request.META["HTTP_USER_AGENT"]) # 用户浏览器的user-agent字符串
    print(request.META["REMOTE_ADDR"]) # 客户端ip地址
    print(request.GET.get('username')) # 获取get参数
    return HttpResponse("")

def test_post(request):
    print(request.method)
    print(request.POST.get('username'))
    return render(request,'2/test_post.html')

def test_response(request):
    response = HttpResponse()
    response.write("hello django")
    response.write("<br>")
    response.write((response.content))
    response.write("<br>")
    response.write(response['Content-Type'])
    response.write("<br>")
    response.write(response.status_code)
    response.write("<br>")
    response.write(response.charset)
    response.write("<br>")
    return response

def test_render(request):
    return render(request,'2/test_render.html',
                  {'info':'hello django'},content_type="text/html")

###### redirect()页面重定向
# redirect方法通过调用模型的get_absolute_url方法进行重定向(模型为：UserBaseInfo)
def test_redirect_model(request,id):
    user = UserBaseInfo.objects.get(id=id)
    return redirect(user)
def userinfo(request,id):
    user = UserBaseInfo.objects.get(id=id)
    return HttpResponse("编号：" + str(user.id) + " 姓名：" + str(user.username))

####### 通过路由反向解析进行重定向
# 使用redirect函数直接反向解析路由的效果，和使用reverse函数的效果一样
def test_redirect_views(request,id):
    return redirect('app2_userinfo',id)
def test_redirect(request):
    return redirect('https://www.phei.com.cn')
